// 客户端结构和常量
#ifndef _CLIENT_
#define _CLIENT_

#include <asgard.h>

/* 常量定义 */
#define MAX_BUF_SIZE 4096   // 接收缓冲区大小
#define MAX_RETRIES 3       // 网络操作最大重试次数
#define CMD_TIMEOUT_SEC 5   // 命令超时时间(秒)
#define MAX_USERNAME_LEN 64 // 用户名最大长度
#define MAX_PASSWORD_LEN 64 // 用户密码最大长度

// 命令输入合法性审查
typedef enum
{
    CMD_LEGAL,   // 合法命令
    CMD_ILLEGAL, // 不合法命令
    CMD_EXIT,    // 退出
} CommandCheck;

// 客户端状态
typedef enum
{
    STATE_AWAIT_AUTH, // 认证等待
    STATE_IDLE,       // 等待用户输入
    STATE_AWAIT_RESP, // 已发送请求，等待响应
    STATE_ERROR       // 错误状态
} ClientState;

/* 客户端上下文结构体
 * 维护整个客户端的运行时状态 */
typedef struct
{
    int sockfd;            // 连接套接字
    ClientState state;     // 状态机状态
    char current_dir[256]; // 当前目录缓存(优化用户体验)
} ClientContext;

/* 用户登录信息 */
typedef struct
{
    char user_name[MAX_USERNAME_LEN]; // 用户名
    char passward[MAX_PASSWORD_LEN];  // 密码
} UserLogInfo;

#endif // CLIENT_H